package cn.lingyangwl.agile.msg.push.api.constatnts;

import cn.lingyangwl.agile.model.enums.ConfigDefineEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * @author shenguangyang
 */
@Getter
@AllArgsConstructor
public enum ChannelTypeEnum {
    /**
     * 短信
     */
    SMS(ConfigDefineEnum.SMS, "1"),
    /**
     * 邮箱
     */
    EMAIL(ConfigDefineEnum.EMAIL, "2"),
    /**
     * 微信公众号
     */
    WX_MP(ConfigDefineEnum.WX_MP,"3"),
    /**
     * PC端推送, 如果 toUsers 为 *, 则推送给全部
     */
    PC(ConfigDefineEnum.PUSH_PC,"4"),
    /**
     * 移动端
     */
    APP(ConfigDefineEnum.PUSH_APP, "5"),
    /**
     * 微信小程序
     */
    WX_MINI_APP(ConfigDefineEnum.WX_MA, "6"),

//    /**
//     * 钉钉
//     */
//    DING_DING(ConfigDefineEnum.DING_DING, "7"),
    ;
    private final ConfigDefineEnum configDefine;
    private final String code;

    public static ChannelTypeEnum ofByCode(String code) {
        return Arrays.stream(ChannelTypeEnum.values()).filter(e -> e.getCode().equalsIgnoreCase(code))
                .findFirst().orElse(null);
    }

    public static ChannelTypeEnum ofByConfigGDefine(ConfigDefineEnum configDefine) {
        return Arrays.stream(ChannelTypeEnum.values()).filter(e -> e.getConfigDefine() == configDefine)
                .findFirst().orElse(null);
    }
}
